package com.whfc.iot.mach.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.whfc.iot.mach.constant.MsgConst;
import lombok.Data;

/**
 * 机械管家-硬件数据
 */
@Data
public abstract class MachMsg {

    /**
     * 开始标记 (2-byte,固定值:0x55AA)
     */
    @JSONField(serialize = false)
    private int startFlag;

    /**
     * 终端类型(1-byte)
     */
    private int deviceType;

    /**
     * 硬件终端ID (3-byte)
     */
    private int deviceId;

    /**
     * 包序号  (1-byte)
     */
    @JSONField(serialize = false)
    private int seq;

    /**
     * 包长度(2-byte)
     */
    @JSONField(serialize = false)
    private int length;

    /**
     * 指令 (1-byte)
     */
    @JSONField(serialize = false)
    private int cmd;

    /**
     * 校验值(1-byte)
     */
    @JSONField(serialize = false)
    private int checkSum;

    /**
     * 校验状态(true-成功 false-失败)
     */
    @JSONField(serialize = false)
    private boolean checkSuccess;

    /**
     * 获取数据位长度
     *
     * @return
     */
    @JSONField(serialize = false)
    public abstract int getDataLength();

    /**
     * 获取消息总长度
     *
     * @return
     */
    @JSONField(serialize = false)
    public int getTotalLength() {
        int dataLength = this.getDataLength();
        return dataLength + MsgConst.FIXED_LENGTH;
    }
}
